package com.tscnd.core.dao; 

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 基础DAO  
 * 
 * 
 * @author xiangtao
 * @version [版本号, 2015年1月11日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface BaseDao<T,ID extends Serializable> {
	/**
	 * 根据ID查询对象
	 * @param id
	 * @return 返回对象
	 * @throws Exception
	 * @see [类、类#方法、类#成员]
	 */
	public T get(ID id) throws Exception;

	/**
	 * 查询全部对象
	 * @return
	 * @throws Exception
	 * @see [类、类#方法、类#成员]
	 */
	public List<T> getAll()throws Exception;

	/**
	 * 分页查询
	 * @return
	 * @throws Exception
	 * @see [类、类#方法、类#成员]
	 */
	public List<T> getPage(Map<String,Object> map)throws Exception;

	/**
	 * 根据ID删除对象
	 * @param id
	 * @return 影响的记录数
	 * @throws Exception
	 * @see [类、类#方法、类#成员]
	 */
	public Integer delete(ID id)throws Exception;
	
	/**
	 * 删除符合条件的记录
	 * @param parameter
	 * @return 影响的记录数
	 * @throws Exception
	 * @see [类、类#方法、类#成员]
	 */
	@SuppressWarnings("rawtypes")
	public Integer deleteParam(Map parameter) throws Exception;
	
	/**
	 * 保存 对象 
	 * @param map
	 * @return 影响的记录数
	 * @throws Exception 
	 * @see [类、类#方法、类#成员]
	 */
	@SuppressWarnings("rawtypes")
	public Integer save(Map map)throws Exception;
	
	/**
	 * 保存 对象 
	 * @param map
	 * @return 影响的记录数
	 * @throws Exception 
	 * @see [类、类#方法、类#成员]
	 */
	 public int save(T entity)throws Exception;
	/**
	 * 修改对象
	 * @param map
	 * @return 影响的记录数
	 * @throws Exception
	 * @see [类、类#方法、类#成员]
	 */
	@SuppressWarnings("rawtypes")
	public Integer update(Map map)throws Exception;
	
	/**
	 * <一句话功能简述> <功能详细描述>
	 * 
	 * @param o
	 * @return 影响的记录数
	 * @throws Exception
	 * @see [类、类#方法、类#成员]
	 */
	@SuppressWarnings("rawtypes")
	public Integer truncate(Map map) throws Exception;

	/**
	 * <一句话功能简述> <功能详细描述>
	 * 
	 * @param o
	 * @param param
	 * @return 影响的记录数
	 * @throws Exception
	 * @see [类、类#方法、类#成员]
	 */
	@SuppressWarnings("rawtypes")
	public  int count(Map param) throws Exception;
}
